package cn.kgc.spring.mybatis.service.impl;

import cn.kgc.spring.mybatis.entity.User;
import cn.kgc.spring.mybatis.mapper.UserMapper;
import cn.kgc.spring.mybatis.service.UserService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;
import java.util.List;

/**
 * @author 课工场
 * @date 2024/2/26
 * @description
 *  @Transactional  注解实现事务控制时  通过源码可以得知 既可以使用在类上  也可以使用在方法上
 *    区别：
 *       注解添加在方法上只对当前方法有效
 *       注解添加在类上则对类中所有的方法生效
 */
@Transactional
@Service
public class UserServiceImpl implements UserService {

    @Resource
    private UserMapper userMapper;

    @Override
    public List<User> getUsers() {
        return userMapper.getUsers();
    }

    @Override
    public Integer addUser(User user) {
        return   userMapper.addUser(user);
    }

    @Override
    public Integer updateUser(User user) {
        return userMapper.updateUser(user);
    }



    // @Transactional  // spring框架中的事务注解
    @Override
    public Integer addAndUpdate(User user) {

        // 添加用户
        Integer integer = userMapper.addUser(user);


        // int a = 1/0;

        // 修改用户  根据id实现用户信息的修改
        User usr = new User();
        usr.setUsername("aa");
        usr.setPassword("666666");
        usr.setId(user.getId());

        Integer integer1 = userMapper.updateUser(usr);

        return integer+integer1;
    }
}
